﻿/**
* Конкретный бар для Accordion
* @author Firsoff Maxim, icq:234859730, firsoff_maxim@mail.ru, tel:+79222345364
* @version 0.1/20.03.2008 10:37
*/

package ru.vega_int.firsoff.as3.components 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import ru.vega_int.firsoff.as3.events.AccordionEvent;
	public class AccordionHeader extends Sprite 
	{
		//	PROPERTIES
		public var _header:*;						//	заголовок бара
		private var _id:uint;						//	идентификатор
		private var _areaMask:Shape;				//	маска для area
		
		public var area:Sprite;							//	ссылка на область контента
		public var moveEnable:Boolean;					//	разрешение движения
		private var _state:Boolean;						//	состояние, false - закрыта вкладка, true - открыта вкладка
		
		public var maxPosY:Number;						//	максимальная позиция по Y
		public var minPosY:Number;						//	минимальная позиция по Y
		public var savePosY:Number;						//	минимальная позиция по Y
		///public var isUp:Boolean;						//	вверху или внизу вкладка
		//	-----------------------------------------------------------------------------------
		
		/**
		 * Конструктор
		 * @param	header	Спрайт - заголовок, как правило подключается из библиотеки
		 * @param	id	Идентификатор
		 */
		public function AccordionHeader(header:*, idBar:uint=1) 
		{
			_header = header;
			_id = idBar;
			_state = false;
			_header.mouseEnabled = _state;
			init();
		};
		
		//	METHODS
		
		private function init() : void
		{
			createArea();
			addChild(_header);			//	добавляем в список отображения
			_header.addEventListener(AccordionEvent.ON_HEADER_CLICK, handleHeaderClick);
		};
		
		private function  createArea() : void
		{
			area = new Sprite();
			area.cacheAsBitmap = true;
			addChild(area);
			
			_areaMask = new Shape();
			_areaMask.visible = false;
			_areaMask.graphics.beginFill(0x000000, 1);
			_areaMask.graphics.drawRect(0,0,1,1);
			_areaMask.graphics.endFill();
			addChild(_areaMask);
			area.mask = _areaMask;
			area.y = _areaMask.y = _header.height;
		};
		
		public function setMask(w:Number, h:Number) : void 
		{
			_areaMask.width = w;
			_areaMask.height = h;
		};
		//	-----------------------------------------------------------------------------------
		
		//	GETTERS/SETTERS
		public function get headerHeight() : Number{return _header.height;};
		public function get id() :uint{return _id;};
		
		public function set state(value:Boolean)
		{
			_state = value;
			_header.mouseEnabled = !_state;
			_header.state = value;
		};
		
		
		public function get state() : Boolean{return _state;};
		//	-----------------------------------------------------------------------------------
		
		//	HANDLERS
		private function handleHeaderClick(e:AccordionEvent) :  void
		{
			//state != state;
			this.dispatchEvent(e);
		};
		//	-----------------------------------------------------------------------------------
	};
	
};
